Computer-aided design (CAD) software allows a user to construct and manipulate complex three-dimensional (3D) models. A number of different modeling techniques can be used to create a 3D model. One such technique is a solid modeling technique, which provides for topological 3D models where the 3D model is a collection of interconnected topological entities (e.g., vertices, edges, and faces). The topological entities have corresponding supporting geometrical entities (e.g., points, trimmed curves, and trimmed surfaces). The trimmed surfaces correspond to the topological faces bounded by the edges. CAD systems may combine solid modeling and other modeling techniques, such as parametric modeling techniques. Parametric modeling techniques can be used to define various parameters for different features and components of a model, and to define relationships between those features and components based on relationships between the various parameters.
A design engineer is a typical user of a 3D CAD system. The design engineer designs physical and aesthetic aspects of 3D models, and is skilled in 3D modeling techniques. The design engineer creates parts and may assemble the parts into a subassembly. A subassembly may also consist of other subassemblies. An assembly is designed using parts and subassemblies. Parts and subassemblies are hereinafter collectively referred to as components.
A solid modeling system may be a feature-based 3D CAD system wherein a part is constructed using various features. Examples of features include bosses, fillets, chamfers, cuts, holes, shells, lofts, and sweeps. Commercially available feature-based modeling systems include the SolidWorks® 2012 software system available from Dassault Systèmes SolidWorks Corporation of Waltham, Mass. SolidWorks software and other commercially available CAD systems store the contents of parts, subassemblies, and assemblies in a data file. In addition to features, the contents of CAD data files may include design profiles, layouts, internal components, and graphical entities.
Two approaches for building CAD models are history-based modeling and direct-edit modeling, the later of which may be referred to as variational modeling. In general, with history-based CAD models, the modeling process may begin by creating a base feature controlled by a two-dimensional sketch, which then may be extruded using, by way of non-limiting example, a revolve, a loft, or a sweep operation. Each subsequent feature of a model of a part is built on a previous feature, and therefore is dependent on a previously created feature. When the design engineer edits a feature of the history-based model, the model is rolled back to a previous state; the state prior to the creation of subsequent dependent features.
Working with a complex history-based CAD model often becomes difficult when a design engineer needs to modify the CAD model. The design engineer must understand how the particular model was built, at times in step-by-step detail, and may need to determine the right parameters that need modification to achieve the desired changes in the output geometry of the model. Quite often, the design engineer cannot find the parameters necessary to make the desired changes. This may occur, for example, if the model was designed with an intention that conflicts with the desired changes. History-based modeling, however, is often viewed as a more powerful approach than direct-edit modeling when designing a complex 3D model because a history-based record of interdependencies reflects design intent and, also importantly, allows feature modifications to automatically apply to features that are dependent on modified features. Thus, history-based modeling is the preferred approach by many designers.
In contrast to a history-based modeler, a direct-edit modeler allows a design engineer to modify a CAD model's geometry without considering the order in which features were created, thereby allowing a design engineer to change a design quite easily, in general. Thus, the design engineer is not required to understand how that model was designed step by step, and changes may be made more quickly because features do not need to be re-created, as do the dependent features in a history-based modeler. Further, the design engineer can optionally add constraints between geometries and can modify a geometry by modifying a dimension value that transforms the geometry. Direct-edit modeling, however, lacks the power of parametric modeling, available with history-based modelers, with regards to working with complex geometries.
With currently available history-based modelers, a design engineer may need to redesign those features that are directly or indirectly dependent upon a feature that was modified in a history-based CAD model, which may be a significant portion of the model. Alternatively, the CAD model may be exported to a model having a format without any feature history or parametric data, then the resulting geometry may be imported into an application that supports direct-editing of the geometry. These existing solutions have limitations. Redesigning the entire history-based CAD model is time consuming and forces the design engineer to re-design many features even though the design for those features may not have changed. Exporting the CAD model without feature history or parametric data removes valuable parametric information, which is an all-or-nothing approach.
Some technologies allow a design engineer to have both history-based features and direct-edit features in the same model. Such technologies place the direct-edit features before the history-based features in the feature order. The design engineer can move some features from a history-based set of features to a direct-edit set of features, but when one of those features is moved from the history-based set to the direct-edit set, all history-based features created prior to the feature being moved are also moved, regardless of any inter-dependencies. This is a disadvantage if the design engineer wants to keep those other features as history-based features.
Other technologies allow design engineers to simulate direct-modeling with a history-based CAD model, where the design engineer can open the CAD model in either a direct-edit modeler or history-based modeler. The design engineer can modify the model utilizing direct-modeling methods (e.g., pushing and pulling faces); however, the modeler changes the CAD model by adding history-based features in the background, thereby affecting the actual changes to the model. A disadvantage with such technologies is that the simulation of direct-editing creates complex history-based features with questionable value to the CAD model. Further, because such technologies are actually history-based approaches, these technologies cannot handle constraints as other direct-modelers do with a variational approach.
Other technologies allow design engineers to switch between direct-edit and history-based modeling modes in the same application. When in direct-modeling mode, the design engineer can modify geometries utilizing direct-modeling techniques (e.g., pushing and pulling faces). The application records the changes that the design engineer makes in the direct-edit mode, and when the design engineer switches back to the history-based mode, the application tries to modify the history-based features so that the end result includes the changes made in the direct-edit mode. A disadvantage of this approach is that the application may be unable to find the right parameters in the model's history to make the design engineer's intended changes. Further, because this dual-mode approach is actually history-based, the dual-mode approach cannot handle constraints as do other direct-modelers with a variational approach.
Currently available technologies attempt to address the problems heretofore discussed, but fall short of the solutions later to be described herein for various reasons. Such solutions allow for time-saving advantages and enhancements to current CAD systems, achieved by providing more efficient means for modifying CAD models while maintaining parametric data included in the design.